Метод Штурма відокремлення коренів

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
АСУ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Чисельні методи

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра АСУ Звіт до лабораторної роботи №4 «Метод Штурма відокремлення коренів» з дисципліни: «Чисельні методи» Варіант №9 Мета роботи: вивчити і засвоїти методи відокремлення коренів. Порядок роботи: Створити проект для виконання індивідуального завдання. Оформити звіт для захисту лабораторної роботи за зразком: назва роботи; мета роботи; порядок роботи; короткі теоретичні відомості; алгоритм побудови розв’язку задачі; тексти відповідних модулів проекту; аналіз отриманих результатів та висновки. Завдання: Відокремити кожен з коренів рівняння f(x)=0, використовуючи метод Штурма з точністю не менше . 9)  Програмний код: #include <iostream> using namespace std; class C{ double ms[40][7]; public: double F (double x) {return x*x*x*x*x-x*x*x-3*x+10;} double F0 (double x) {return 5*x*x*x*x-3*x*x-3;} double F1 (double x) {return x*x*x-x+25;} double F2 (double x) {return -8*x*x+125*x-3;} double F3 (double x) {return x-19750.0/15665.0;} double F4 (double x) {return 1;} void show (); double anAbs (double a){ if (a>0) return -a; else return a; } }; void main () { setlocale (LC_ALL, ""); C obj; obj.show(); cin.get(); } void C::show () { double buf; cout.width(2);cout<<"x"; cout.width(10);cout<<"f"; cout.width(10);cout<<"f0"; cout.width(10);cout<<"f1"; cout.width(10);cout<<"f2"; cout.width(10);cout<<"f3"; cout.width(10);cout<<"f4"<<endl<<endl; cout.precision(2); for (int ii=0; ii<30; ii++) { double i=anAbs((double)ii-10)/10.0; cout.width(2); cout<<i; cout.width(10); buf=F (i); cout<<buf; if (buf>=0) ms[ii][0]=1; else ms[ii][0]=0; cout.width(10); buf=F0 (i); cout<<buf; if (buf>=0) ms[ii][1]=1; else ms[ii][1]=0; cout.width(10); buf=F1 (i); cout<<buf; if (buf>=0) ms[ii][2]=1; else ms[ii][2]=0; cout.width(10); buf=F2 (i); cout<<buf; if (buf>=0) ms[ii][3]=1; else ms[ii][3]=0; cout.width(10); buf=F3 (i); cout<<buf; if (buf>=0) ms[ii][4]=1; else ms[ii][4]=0; cout.width(10); buf=F4 (i); cout<<buf; if (buf>=0) ms[ii][5]=1; else ms[ii][5]=0; buf=0; for (int j=0; j<6; j++) if ( ms[ii][j]==0) buf++; ms[ii][6]=buf; cout<<endl; } cout<<endl<<endl; cout.width(2);cout<<"x"; cout.width(10);cout<<"f"; cout.width(10);cout<<"f0"; cout.width(10);cout<<"f1"; cout.width(10);cout<<"f2"; cout.width(10);cout<<"f3"; cout.width(10);cout<<"f4"<<endl<<endl; for (int i=0; i<40; i++){ cout.width(2); cout<<-((double)i/10-1); for (int j=0; j<6; j++){ cout.width(10); if (ms[(int)(i)][j]==0) cout<<"-"; else cout<<"+"; } cout<<endl; } cout<<endl<<endl; cout<<"Дiйснi коренi знаходяться у промiжках:"<<endl; for (int ii=0; ii<30; ii++){ double i=anAbs((double)ii-10)/10.0; if ( ms[ii+1][6]!=ms[ii][6]) cout<<i<<" < x < "<<i-0.1<<endl; } } Приклад виконання програми / Висновок: навчився визначати проміжки, які містять дійсні корені для многочленів високих степенів і програмно реалізував пошук таких проміжків за допомогою методу (алгоритму) Штурма. Ме́тод Шту́рма використовується для відокремлення дійсних коренів многочленів, тобто знаходження інтервалів, що містять рівно по одному кореню. Надалі отримана інформація про розміщення коренів може бути використана для їх знаходження чисельними методами. Даний метод (Штурма) дає можливість визначити кількіст дійсних і комплексних коренів для многочлена і визначити відрізки на яких знаходяться дійсні корені, для подальшого їх знаходження. Подальше їх знаходження виконується іншими методами. Згідно з результатами програмної реалізації даного методу, для заданого многочлена були отримані три проміжки, а отже наявні три дійсних корені у цих заданих проміжках. Оскільки многочлен має п’ять коренів, то два інших кореня являються комплексними числами. Дана програма демонструє значення у контрольних точках кожного відрізка, для кожної досліджуваної функції, а також демонст...
Антиботан аватар за замовчуванням

06.12.2015 15:12

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини